/********************  class ******************************/
// type sexType = '男' | '女'

// // 父类
// class Person {
// 	// 实例属性
// 	name: string
// 	sex: sexType
// 	age: number
// 	// 构造器
// 	constructor(name: string, sex: sexType, age: number) {
// 		this.name = name
// 		this.sex = sex
// 		this.age = age
// 	}
// 	// 原型
// 	sayName() {
// 		console.log(`我是${this.name}, 性别${this.sex}, 今天${this.age}岁了`)
// 	}
// }
// // 子类
// class Women extends Person {
// 	like: string = '学习'
// 	// 如果我们自己实现的const
// 	// 必须调用父类的constructor 
// 	constructor(name: string, age: number) {
// 		super(name, '女', 18)
// 	}
// }

// const w1 = new Women('小三三', 18)
// w1.sayName()


// 公共，私有与受保护的修饰符

class Father {
	// 公共属性  一般public会省略  默认属性是公共类型
	// 任何人都可以访问
	public name: string
	// 保护属性  只可以自己访问或者自己的子类访问 
	// 外部人员无法访问
	protected age: number
	// 私有属性  只可以自己访问
	private moeny: number = 10000000000
	constructor(name: string, age: number) {
		this.age = age
		this.name = name

		// 自己访问
		this.age = 1
		this.age = 1000000000

		this.moeny -= 10
	}
}
class Son extends Father {
	constructor(name: string, age: number) {
		super(name, age)
		// 保护属性 可以在子类访问
		this.age = 1231231
		this.age = 1231231
		// 私有属性 不允许在子类访问
		// this.moeny = 1231231
	}
}
const s = new Father('炎帝', 10000)
console.log(s.name);
// 外部不允许访问 
// console.log(s.age)
